package com.macro.cloud.executors;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;


/*
*
*
* 、Java 线程池

Java通过Executors提供四种线程池，分别为：
* newCachedThreadPool创建一个可缓存线程池，如果线程池长度超过处理需要，可灵活回收空闲线程，若无可回收，则新建线程。
* newFixedThreadPool 创建一个定长线程池，可控制线程最大并发数，超出的线程会在队列中等待。
* newScheduledThreadPool 创建一个定长线程池，支持定时及周期性任务执行。
* newSingleThreadExecutor 创建一个单线程化的线程池，它只会用唯一的工作线程来执行任务，保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。

* */
public class ExecutorsDemo3 {
    public static final Logger log = LoggerFactory.getLogger(ExecutorsDemo3.class);


    //------------------------------------------------

    /**
     * 延迟连接池, 创建一个定长线程池，支持定时及周期性任务执行。延迟执行示例代码如下：
     */
    public static void main(String[] args) {
        //ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(1);
        ScheduledThreadPoolExecutor exec = new ScheduledThreadPoolExecutor(1);
        //延迟一段时间就打印
        exec.schedule(new Runnable() {
            @Override
            public void run() {
                System.out.println("延迟3秒后执行.....");
            }
        }, 3, TimeUnit.SECONDS);

    }


}
